package com.huilian.iotbox.admin.wap.service;


import com.github.pagehelper.PageInfo;
import com.huilian.iotbox.data.common.ServerResponse;
import com.huilian.iotbox.data.dto.DisplayRackItemDto;
import com.huilian.iotbox.data.po.DisplayRackItem;
import com.huilian.iotbox.data.vo.DisplayRackItemVo;
import com.huilian.iotbox.data.vo.DisplayRackVo;

import java.util.List;

public interface DisplayRackItemService {

    List<DisplayRackItemVo> findDisplayRackItemByDeviceId(DisplayRackItemDto displayRackItemDto);

    void insert(DisplayRackItem displayRackItem);

    void update(DisplayRackItem displayRackItem);

    ServerResponse findAllBoundDisplayRackItemByDeviceId(DisplayRackItemDto displayRackItemDto);

    ServerResponse findAllGoodsStockAwardByDeviceId(DisplayRackItemDto displayRackItemDto);

    List<DisplayRackItemVo> findDisplayRackItemByDisplayRackId(Long displayRackId);


    List<DisplayRackItemVo> findVendingMachine(DisplayRackItemDto displayRackItemDto);

    Integer updateByIdAndUserId(DisplayRackItemDto displayRackItemDto) throws Exception;

    DisplayRackItemVo findInventoryByDisplayRackId(Long displayRackId) throws Exception;

    /**
     * 清货
     */
    void oneClickClearance(DisplayRackItemDto displayRackItemDto);
    /**
     *  一键补满
     */
    void fillItUpWithOneKey(DisplayRackItemDto displayRackItemDto);

    /**
     *  根据hierarchy层级 displayRackId父展架ID查询商品
     */
    PageInfo findCommodityByHierarchy(DisplayRackItemDto displayRackItemDto);

    /**
     *  多货道 补货
     */
    void multiAisleFilling(DisplayRackItemDto displayRackItemDto);

    /**
     * 下架商品
     */
    Integer offTheShelves(DisplayRackItemDto displayRackItemDto);

    Integer updateOffEnabledById(DisplayRackItemDto displayRackItemDto);
    Integer updateAllOffEnabledById(DisplayRackItemDto displayRackItemDto);

    Integer updateAliasById(DisplayRackItemDto displayRackItemDto);

    DisplayRackItemVo findById(DisplayRackItemDto displayRackItemDto);

    /**
     * 根据设备id查询该商品缺货数
     */
    DisplayRackItemVo findOutOfStockByDeviceId(DisplayRackItemDto displayRackItemDto);


    /**
     * 缺货盘点
     */
    PageInfo findTakeStockOfOutOfStock(DisplayRackItemDto displayRackItemDto);

    /**
     * 缺货详情
     */
    PageInfo findOutOfStockDetails(DisplayRackItemDto displayRackItemDto);


    /**
     * 发送检测货道电机
     */
    List<String> sendInspectionTrackMotor(DisplayRackItemDto displayRackItemDto,Integer userId);

    /**
     * 改价
     */
    Integer updatePrice(DisplayRackItemDto displayRackItemDto);

    List<DisplayRackItemVo> findOutOfStockDetailsByDisplayRackId(DisplayRackItemDto displayRackItemDto);

    ServerResponse batchModifyCommodity(DisplayRackItemDto displayRackItemDto);

    DisplayRackItemVo findOutOfStockByUserId(DisplayRackItemDto displayRackItemDto);

    List<DisplayRackItemVo> findAllChannelInformationByDeviceId(DisplayRackItemDto displayRackItemDto);

    DisplayRackVo findDisplayRackAndItemList(DisplayRackItemDto displayRackItemDto);

    void updateRestoreByDisplayRackId(Long id);
}
